فارسی

پتانسیل کامل Tailwind CSS را با تسلط بر توسعه تم از طریق پیکربندی پیش‌فرض آزاد کنید. یاد بگیرید چگونه تم پیش‌فرض را برای طراحی‌های منحصر به فرد سفارشی‌سازی و گسترش دهید.

پیکربندی پیش‌فرض Tailwind CSS: تسلط بر استراتژی‌های توسعه تم

Tailwind CSS یک فریمورک CSS از نوع utility-first است که با ارائه مجموعه‌ای از کلاس‌های کاربردی از پیش تعریف‌شده، توسعه فرانت‌اند را متحول کرده است. قدرت اصلی آن در انعطاف‌پذیری و قابلیت پیکربندی آن نهفته است که به توسعه‌دهندگان اجازه می‌دهد تا فریمورک را مطابق با نیازهای خاص پروژه خود تنظیم کنند. یکی از قدرتمندترین راه‌ها برای سفارشی‌سازی Tailwind CSS از طریق پیکربندی پیش‌فرض (preset) است که به شما امکان می‌دهد تم پیش‌فرض را گسترش داده و توکن‌های طراحی خود را اضافه کنید. این راهنما به دنیای پیکربندی پیش‌فرض Tailwind CSS می‌پردازد، استراتژی‌های مختلف توسعه تم را بررسی می‌کند و مثال‌های عملی برای کمک به شما در تسلط بر این جنبه ضروری از توسعه فرانت‌اند ارائه می‌دهد.

درک پیکربندی Tailwind CSS

قبل از ورود به پیکربندی پیش‌فرض، درک پیکربندی پایه‌ای Tailwind CSS بسیار مهم است. فایل پیکربندی اصلی tailwind.config.js (یا tailwind.config.ts برای پروژه‌های تایپ‌اسکریپت) است که در ریشه پروژه شما قرار دارد. این فایل جنبه‌های مختلف Tailwind CSS را کنترل می‌کند، از جمله:

فایل tailwind.config.js از سینتکس جاوااسکریپت (یا تایپ‌اسکریپت) استفاده می‌کند، که به شما امکان می‌دهد از متغیرها، توابع و منطق‌های دیگر برای پیکربندی پویا Tailwind CSS استفاده کنید. این انعطاف‌پذیری برای ایجاد تم‌های قابل نگهداری و مقیاس‌پذیر ضروری است.

ساختار پیکربندی پایه

در اینجا یک مثال پایه‌ای از فایل tailwind.config.js آورده شده است:


module.exports = {
  content: [
    './src/**/*.{html,js,ts,jsx,tsx}',
    './public/index.html'
  ],
  theme: {
    extend: {
      colors: {
        primary: '#3490dc',
        secondary: '#ffed4a',
      },
      fontFamily: {
        sans: ['Graphik', 'sans-serif'],
      },
    },
  },
  plugins: [],
};

در این مثال:

پیش‌فرض‌های Tailwind CSS چه هستند؟

پیش‌فرض‌های Tailwind CSS فایل‌های پیکربندی قابل اشتراکی هستند که به شما امکان می‌دهند پیکربندی‌های Tailwind CSS خود را در پروژه‌های مختلف کپسوله کرده و مجدداً استفاده کنید. به آن‌ها به عنوان افزونه‌های بسته‌بندی شده برای Tailwind فکر کنید که تم‌ها، پلاگین‌ها و سایر سفارشی‌سازی‌های از پیش تعریف‌شده را ارائه می‌دهند. این کار نگهداری از استایل و برندینگ یکپارچه در برنامه‌های مختلف را، به ویژه در سازمان‌ها یا تیم‌های بزرگ، فوق‌العاده آسان می‌کند.

به جای کپی و پیست کردن کد پیکربندی یکسان در هر فایل tailwind.config.js، می‌توانید به سادگی یک پیش‌فرض را نصب کرده و در پیکربندی خود به آن ارجاع دهید. این رویکرد ماژولار باعث ترویج استفاده مجدد از کد، کاهش افزونگی و ساده‌سازی مدیریت تم می‌شود.

مزایای استفاده از پیش‌فرض‌ها

ایجاد و استفاده از پیش‌فرض‌های Tailwind CSS

بیایید مراحل ایجاد و استفاده از یک پیش‌فرض Tailwind CSS را بررسی کنیم.

۱. ایجاد یک بسته پیش‌فرض

ابتدا، یک بسته Node.js جدید برای پیش‌فرض خود ایجاد کنید. می‌توانید این کار را با ایجاد یک دایرکتوری جدید و اجرای npm init -y در داخل آن انجام دهید.


mkdir tailwind-preset-example
cd tailwind-preset-example
npm init -y

این دستور یک فایل package.json با مقادیر پیش‌فرض ایجاد می‌کند. اکنون، فایلی به نام index.js (یا index.ts برای تایپ‌اسکریپت) در ریشه بسته پیش‌فرض خود ایجاد کنید. این فایل حاوی پیکربندی Tailwind CSS شما خواهد بود.


// index.js
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: {
          primary: '#1a202c',
          secondary: '#4299e1',
        },
      },
      fontFamily: {
        display: ['Oswald', 'sans-serif'],
      },
    },
  },
  plugins: [],
};

این پیش‌فرض نمونه یک پالت رنگ سفارشی (brand.primary و brand.secondary) و یک خانواده فونت سفارشی (display) تعریف می‌کند. می‌توانید هر گزینه پیکربندی معتبر Tailwind CSS را به پیش‌فرض خود اضافه کنید.

سپس، فایل package.json خود را به‌روز کنید تا نقطه ورود اصلی پیش‌فرض خود را مشخص کنید:


{
  "name": "tailwind-preset-example",
  "version": "1.0.0",
  "description": "A simple Tailwind CSS preset",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "tailwind",
    "preset",
    "theme"
  ],
  "author": "Your Name",
  "license": "MIT"
}

اطمینان حاصل کنید که ویژگی main به نقطه ورود پیش‌فرض شما (مثلاً index.js) اشاره می‌کند.

۲. انتشار پیش‌فرض (اختیاری)

اگر می‌خواهید پیش‌فرض خود را با جامعه یا تیم خود به اشتراک بگذارید، می‌توانید آن را در npm منتشر کنید. ابتدا، اگر حساب npm ندارید، یک حساب ایجاد کنید. سپس، از ترمینال خود وارد npm شوید:


npm login

در نهایت، بسته پیش‌فرض خود را منتشر کنید:


npm publish

توجه: اگر در حال انتشار بسته‌ای با نامی هستید که قبلاً گرفته شده است، باید نام دیگری انتخاب کنید. همچنین اگر اشتراک پولی npm دارید، می‌توانید بسته‌های خصوصی را در npm منتشر کنید.

۳. استفاده از یک پیش‌فرض در پروژه Tailwind CSS

اکنون، بیایید ببینیم چگونه از یک پیش‌فرض در یک پروژه Tailwind CSS استفاده کنیم. ابتدا، بسته پیش‌فرض خود را نصب کنید:


npm install tailwind-preset-example  # با نام پیش‌فرض خود جایگزین کنید

سپس، فایل tailwind.config.js خود را برای ارجاع به پیش‌فرض به‌روز کنید:


// tailwind.config.js
module.exports = {
  content: [
    './src/**/*.{html,js,ts,jsx,tsx}',
    './public/index.html'
  ],
  presets: [
    require('tailwind-preset-example') // با نام پیش‌فرض خود جایگزین کنید
  ],
  theme: {
    extend: {
      // هنوز می‌توانید تم را در اینجا گسترش دهید
    },
  },
  plugins: [],
};

آرایه presets به شما امکان می‌دهد یک یا چند پیش‌فرض را برای استفاده در پروژه خود مشخص کنید. Tailwind CSS پیکربندی‌های این پیش‌فرض‌ها را با پیکربندی پروژه شما ادغام می‌کند و راهی انعطاف‌پذیر برای مدیریت تم شما فراهم می‌کند.

اکنون می‌توانید از رنگ‌ها و خانواده‌های فونت سفارشی تعریف شده در پیش‌فرض خود در HTML استفاده کنید:


Hello, Tailwind CSS!

استراتژی‌های توسعه تم

بخش theme.extend در فایل tailwind.config.js مکانیسم اصلی برای گسترش تم پیش‌فرض Tailwind CSS است. در اینجا چند استراتژی کلیدی برای توسعه موثر تم شما آورده شده است:

۱. افزودن رنگ‌های سفارشی

Tailwind CSS یک پالت رنگ پیش‌فرض جامع ارائه می‌دهد، اما اغلب نیاز خواهید داشت که رنگ‌های برند یا سایه‌های سفارشی خود را اضافه کنید. می‌توانید این کار را با تعریف مقادیر رنگ جدید در بخش theme.extend.colors انجام دهید.


module.exports = {
  theme: {
    extend: {
      colors: {
        'brand-primary': '#007bff',
        'brand-secondary': '#6c757d',
        'brand-success': '#28a745',
        'brand-danger': '#dc3545',
      },
    },
  },
  plugins: [],
};

در این مثال، ما چهار رنگ برند جدید اضافه کرده‌ایم: brand-primary، brand-secondary، brand-success و brand-danger. سپس می‌توان از این رنگ‌ها در HTML شما با استفاده از کلاس‌های کاربردی مربوطه استفاده کرد:



پالت‌های رنگ و سایه‌ها

برای طرح‌های رنگی پیچیده‌تر، می‌توانید پالت‌های رنگی با چندین سایه تعریف کنید:


module.exports = {
  theme: {
    extend: {
      colors: {
        gray: {
          100: '#f7fafc',
          200: '#edf2f7',
          300: '#e2e8f0',
          400: '#cbd5e0',
          500: '#a0aec0',
          600: '#718096',
          700: '#4a5568',
          800: '#2d3748',
          900: '#1a202c',
        },
      },
    },
  },
  plugins: [],
};

این به شما امکان می‌دهد از سایه‌های خاکستری مانند gray-100، gray-200 و غیره استفاده کنید و کنترل دقیق‌تری بر پالت رنگ خود داشته باشید.

۲. سفارشی‌سازی خانواده‌های فونت

Tailwind CSS با مجموعه‌ای پیش‌فرض از فونت‌های سیستمی عرضه می‌شود. برای استفاده از فونت‌های سفارشی، باید آن‌ها را در بخش theme.extend.fontFamily تعریف کنید.

ابتدا، اطمینان حاصل کنید که فونت‌های سفارشی شما به درستی در پروژه بارگذاری شده‌اند. می‌توانید از قوانین @font-face در CSS خود استفاده کنید یا به آن‌ها از یک CDN لینک دهید.


/* styles.css */
@font-face {
  font-family: 'Open Sans';
  src: url('/fonts/OpenSans-Regular.woff2') format('woff2'),
       url('/fonts/OpenSans-Regular.woff') format('woff');
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: 'Open Sans';
  src: url('/fonts/OpenSans-Bold.woff2') format('woff2'),
       url('/fonts/OpenSans-Bold.woff') format('woff');
  font-weight: 700;
  font-style: normal;
}

سپس، خانواده فونت را در فایل tailwind.config.js خود تعریف کنید:


module.exports = {
  theme: {
    extend: {
      fontFamily: {
        'body': ['Open Sans', 'sans-serif'],
        'heading': ['Montserrat', 'sans-serif'],
      },
    },
  },
  plugins: [],
};

اکنون می‌توانید از این خانواده‌های فونت در HTML خود استفاده کنید:


این متن از فونت Open Sans استفاده می‌کند.

این یک عنوان با فونت Montserrat است.

۳. گسترش فاصله‌گذاری و اندازه‌بندی

Tailwind CSS یک مقیاس فاصله‌گذاری واکنش‌گرا و سازگار بر اساس واحد rem ارائه می‌دهد. می‌توانید این مقیاس را با افزودن مقادیر فاصله‌گذاری سفارشی در بخش‌های theme.extend.spacing و theme.extend.width/height گسترش دهید.


module.exports = {
  theme: {
    extend: {
      spacing: {
        '72': '18rem',
        '84': '21rem',
        '96': '24rem',
      },
      width: {
        '1/7': '14.2857143%',
        '2/7': '28.5714286%',
        '3/7': '42.8571429%',
        '4/7': '57.1428571%',
        '5/7': '71.4285714%',
        '6/7': '85.7142857%',
      },
    },
  },
  plugins: [],
};

در این مثال، ما مقادیر فاصله‌گذاری جدید (72، 84 و 96) و عرض‌های کسری بر اساس یک گرید ۷ ستونی اضافه کرده‌ایم. این‌ها را می‌توان به این صورت استفاده کرد:


این عنصر دارای حاشیه بالایی برابر با 18rem است.
این عنصر دارای عرضی برابر با 42.8571429% است.

۴. افزودن نقاط شکست سفارشی

Tailwind CSS مجموعه‌ای از نقاط شکست پیش‌فرض (sm، md، lg، xl، 2xl) برای طراحی واکنش‌گرا ارائه می‌دهد. می‌توانید این نقاط شکست را سفارشی کنید یا نقاط جدیدی را در بخش theme.extend.screens اضافه کنید.


module.exports = {
  theme: {
    extend: {
      screens: {
        'xs': '475px',
        'tablet': '640px',
        'laptop': '1024px',
        'desktop': '1280px',
      },
    },
  },
  plugins: [],
};

اکنون می‌توانید از نقاط شکست جدید در کلاس‌های کاربردی خود استفاده کنید:


اندازه این متن بر اساس اندازه صفحه نمایش تغییر می‌کند.

۵. سفارشی‌سازی شعاع گوشه و سایه‌ها

شما همچنین می‌توانید مقادیر پیش‌فرض شعاع گوشه و سایه را به ترتیب در بخش‌های theme.extend.borderRadius و theme.extend.boxShadow سفارشی کنید.


module.exports = {
  theme: {
    extend: {
      borderRadius: {
        'xl': '0.75rem',
        '2xl': '1rem',
        '3xl': '1.5rem',
        '4xl': '2rem',
      },
      boxShadow: {
        'custom': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',
      },
    },
  },
  plugins: [],
};

این به شما امکان می‌دهد از کلاس‌های کاربردی مانند rounded-xl، rounded-2xl و shadow-custom استفاده کنید.

تکنیک‌های پیشرفته توسعه تم

فراتر از استراتژی‌های پایه توسعه تم، چندین تکنیک پیشرفته وجود دارد که می‌تواند به شما در ایجاد تم‌های انعطاف‌پذیرتر و قابل نگهداری‌تر کمک کند.

۱. استفاده از توابع برای مقادیر پویا

می‌توانید از توابع جاوااسکریپت برای تولید پویای مقادیر تم بر اساس متغیرها یا منطق‌های دیگر استفاده کنید. این کار به ویژه برای ایجاد پالت‌های رنگی بر اساس یک رنگ پایه یا تولید مقادیر فاصله‌گذاری بر اساس یک ضریب مفید است.


const colors = require('tailwindcss/colors');

module.exports = {
  theme: {
    extend: {
      colors: {
        primary: {
          50:  ({ opacityValue }) => `rgba(var(--color-primary-50), ${opacityValue})`,
          100: ({ opacityValue }) => `rgba(var(--color-primary-100), ${opacityValue})`,
          200: ({ opacityValue }) => `rgba(var(--color-primary-200), ${opacityValue})`,
          300: ({ opacityValue }) => `rgba(var(--color-primary-300), ${opacityValue})`,
          400: ({ opacityValue }) => `rgba(var(--color-primary-400), ${opacityValue})`,
          500: ({ opacityValue }) => `rgba(var(--color-primary-500), ${opacityValue})`,
          600: ({ opacityValue }) => `rgba(var(--color-primary-600), ${opacityValue})`,
          700: ({ opacityValue }) => `rgba(var(--color-primary-700), ${opacityValue})`,
          800: ({ opacityValue }) => `rgba(var(--color-primary-800), ${opacityValue})`,
          900: ({ opacityValue }) => `rgba(var(--color-primary-900), ${opacityValue})`,
        }
      },
      fontSize: {
        'fluid': 'clamp(1rem, 5vw, 1.5rem)', // مثال تایپوگرافی سیال
      }
    },
  },
  plugins: [ ],
};

در این مثال، ما از یک تابع برای تولید اندازه فونت سیال استفاده می‌کنیم که آن را در اندازه‌های مختلف صفحه نمایش واکنش‌گرا می‌کند.

۲. بهره‌گیری از متغیرهای CSS (ویژگی‌های سفارشی)

متغیرهای CSS (ویژگی‌های سفارشی) راهی قدرتمند برای مدیریت و به‌روزرسانی پویای مقادیر تم فراهم می‌کنند. می‌توانید متغیرهای CSS را در انتخابگر :root خود تعریف کرده و سپس در پیکربندی Tailwind CSS به آن‌ها ارجاع دهید.


/* styles.css */
:root {
  --brand-primary: #007bff;
  --brand-secondary: #6c757d;
}

module.exports = {
  theme: {
    extend: {
      colors: {
        'brand-primary': 'var(--brand-primary)',
        'brand-secondary': 'var(--brand-secondary)',
      },
    },
  },
  plugins: [],
};

این به شما امکان می‌دهد به راحتی رنگ‌های برند را با تغییر مقادیر متغیرهای CSS به‌روز کنید، بدون اینکه نیازی به تغییر پیکربندی Tailwind CSS باشد.

۳. استفاده از تابع کمکی `theme()`

Tailwind CSS یک تابع کمکی theme() ارائه می‌دهد که به شما امکان می‌دهد به مقادیر تم در داخل پیکربندی خود دسترسی داشته باشید. این برای ایجاد روابط بین مقادیر مختلف تم مفید است.


module.exports = {
  theme: {
    extend: {
      boxShadow: {
        'outline': '0 0 0 3px var(--tw-ring-color)',
        'custom': `0 2px 4px 0 rgba(0, 0, 0, 0.10), 0 2px 4px 0 rgba(0, 0, 0, 0.10)`,
      },
      ringColor: (theme) => ({
        DEFAULT: theme('colors.blue.500', '#3b82f6'),
        'custom-blue': '#4ade80',
      }),
    },
  },
  plugins: [],
};

در این مثال، ما از تابع کمکی theme() برای دسترسی به رنگ آبی پیش‌فرض از پالت رنگ Tailwind استفاده می‌کنیم. اگر `colors.blue.500` تعریف نشده باشد، به '#3b82f6' بازمی‌گردد. سپس می‌توان `ringColor` و `boxShadow` جدید را به هر عنصری اعمال کرد.

بهترین شیوه‌ها برای توسعه تم

در اینجا چند بهترین شیوه برای به خاطر سپردن هنگام گسترش تم Tailwind CSS شما آورده شده است:

مثال‌های دنیای واقعی از توسعه تم

بیایید به چند مثال واقعی از چگونگی استفاده از توسعه تم برای ایجاد طراحی‌های منحصر به فرد و سازگار نگاهی بیندازیم.

۱. برندینگ شرکتی

بسیاری از شرکت‌ها دستورالعمل‌های برند سخت‌گیرانه‌ای دارند که رنگ‌ها، فونت‌ها و فاصله‌گذاری‌هایی را که باید در تمام مواد بازاریابی آن‌ها استفاده شود، دیکته می‌کند. می‌توانید از توسعه تم برای اعمال این دستورالعمل‌ها در پروژه‌های Tailwind CSS خود استفاده کنید.

برای مثال، یک شرکت ممکن است یک رنگ اصلی #003366، یک رنگ ثانویه #cc0000 و یک خانواده فونت خاص برای عناوین داشته باشد. می‌توانید این مقادیر را در فایل tailwind.config.js خود تعریف کرده و سپس در سراسر پروژه خود از آن‌ها استفاده کنید.

۲. پلتفرم تجارت الکترونیک

یک پلتفرم تجارت الکترونیک ممکن است نیاز به سفارشی‌سازی تم برای مطابقت با سبک دسته‌بندی‌های مختلف محصولات یا برندها داشته باشد. می‌توانید از توسعه تم برای ایجاد طرح‌های رنگی و سبک‌های فونت مختلف برای هر دسته استفاده کنید.

برای مثال، ممکن است از یک تم روشن و رنگارنگ برای محصولات کودکان و یک تم پیچیده‌تر و مینیمالیستی برای کالاهای لوکس استفاده کنید.

۳. بین‌المللی‌سازی (i18n)

هنگام ساخت وب‌سایت‌ها برای مخاطبان جهانی، ممکن است نیاز به تنظیم تم بر اساس زبان یا منطقه کاربر داشته باشید. به عنوان مثال، اندازه‌های فونت یا فاصله‌گذاری‌ها ممکن است برای زبان‌هایی با کلمات طولانی‌تر یا مجموعه‌های کاراکتر متفاوت نیاز به تنظیم داشته باشند.

می‌توانید این کار را با استفاده از متغیرهای CSS و جاوااسکریپت برای به‌روزرسانی پویای تم بر اساس موقعیت مکانی کاربر انجام دهید.

نتیجه‌گیری

پیکربندی پیش‌فرض و توسعه تم در Tailwind CSS ابزارهای قدرتمندی هستند که به شما امکان می‌دهند فریمورک را مطابق با نیازهای خاص پروژه خود سفارشی و تنظیم کنید. با درک ساختار پیکربندی پایه، کاوش در استراتژی‌های مختلف توسعه تم و پیروی از بهترین شیوه‌ها، می‌توانید طراحی‌های منحصر به فرد، سازگار و قابل نگهداری ایجاد کنید. به یاد داشته باشید که از قدرت توابع، متغیرهای CSS و تابع کمکی theme() برای ایجاد تم‌های پویا و انعطاف‌پذیر بهره ببرید. چه در حال ساخت یک وب‌سایت شرکتی، یک پلتفرم تجارت الکترونیک یا یک برنامه جهانی باشید، تسلط بر توسعه تم به شما این قدرت را می‌دهد که با Tailwind CSS تجربیات کاربری استثنایی خلق کنید.